package com.itheima.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.CheckItemService;
import com.itheima.dao.CheckItemDao;
import com.itheima.entity.PageResult;
import com.itheima.exception.CheckItemException;
import com.itheima.pojo.CheckItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service(interfaceClass = CheckItemService.class)
@Transactional
public class CheckItemServiceImpl implements CheckItemService {

    @Autowired
    private CheckItemDao checkItemDao;

    @Override  /*分页查询，以下两步顺序不能调换，因为无论是否有条件，都需要根据当前页数与每页记录数进行分页查询*/
    public PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString) {
        /*1、使用分页插件查询每页内容*/
        Page page = PageHelper.startPage(currentPage, pageSize);
        /*2、根据条件进行查询*/
        List<CheckItem> checkItemList = checkItemDao.pageQueryString(queryString);

        return new PageResult(page.getTotal(),checkItemList);
    }

    /*添加新的检查项*/
    @Override
    public void addCheckItem(CheckItem checkItem) {
        checkItemDao.addCheckItem(checkItem);
    }

    /*删除检查项*/
    @Override
    public void deleteCheckItem(Integer id) throws CheckItemException {
        //先确定检查项是否被检查组使用，被使用就不进行删除
        Integer count = checkItemDao.queryCheckItemAndCheckGroup(id);
        if (count > 0){
            throw new CheckItemException("检查项正在被使用，不能删除");
        }
        /*检查项没有被使用，可以删除*/
        checkItemDao.deleteCheckItem(id);

    }

    /*点击编辑，数据回显*/
    @Override
    public CheckItem queryCheckItemById(Integer id) {

        return checkItemDao.queryCheckItemById(id);
    }

    /*编辑检查项*/
    @Override
    public void updateCheckItem(CheckItem checkItem) {
        checkItemDao.updateCheckItem(checkItem);
    }

    /*查询所有检查项*/
    @Override
    public List<CheckItem> queryAllCheckItem() {
        return checkItemDao.queryAll();
    }
}
